import Vue from 'vue';

/**
 * 发送请求
 * @param {api} api 请求api
 * @param {function} beforeSubmit 提交前处理
 * @param {function} handleAction 提交后处理
 */
Vue.prototype.$http = async function ({ api, form = {}, beforeSubmit, success, error, last }) {
  form = { ...form };
  if (beforeSubmit && (await beforeSubmit(form)) === true) return;
  let res =
    (await api(form).catch(err => {
      err;
    })) || {};
  if (res.success) success(res.data, form);
  else error && error(res.data, form);
  last && last();
};

/**
 * 格式化文件大小
 * @param {filesize} filesize bytes为单位的参数
 */
Vue.prototype.$renderSize = function (filesize) {
  if (null == filesize || filesize == '') {
    return '0 Bytes';
  }
  var unitArr = new Array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
  var index = 0;
  var srcsize = parseFloat(filesize);
  index = Math.floor(Math.log(srcsize) / Math.log(1024));
  var size = srcsize / Math.pow(1024, index);
  size = size.toFixed(2); //保留的小数位数
  return size + unitArr[index];
};
